package com.huangliusong.quickstart;

import com.lmax.disruptor.RingBuffer;

import java.nio.ByteBuffer;

/**
 * @author huangliusong
 * @since 2018/11/25
 * {@link }
 */
public class OrderEvenProducer {

    private RingBuffer<OrderEvent> ringBuffer;
    public OrderEvenProducer(RingBuffer<OrderEvent> ringBuffer) {
        this.ringBuffer=ringBuffer;
    }

    public void sendData(ByteBuffer bb){
        //在生产者发送消息的时候 需要从ringbuffer获取一个可用的序号
        long sequence=ringBuffer.next();
        try{
        //根据这个需要找到具体orderevent的元素,获取orderevent对象是一个没有被属性赋值的控对象
        OrderEvent orderEvent=ringBuffer.get(sequence);
        //赋值实际值
        orderEvent.setValue(bb.getLong(0));
        }finally {
            //提交操作
            ringBuffer.publish(sequence);
        }
    }
}
